<?php
	require_once(dirname(__FILE__) . '/../simpletest/autorun.php');
	require_once('include.php');
	
	class DoacaoTest extends UnitTestCase {
		
		function testCriaModel(){
			$doacao = new Doacao("2011-11-20");
			$produto = new Produto("Produto1");
			$this->assertEqual($doacao->dataInicio, "2011-11-20");
			$this->assertEqual($produto->nome, "Produto1");
		}
		
	    function testCamposVazios() {
	    	$_POST = array(
	    	"nome" => "",
			"quantidade" => "",
			"descricao" => "",
			"preco" => "",
			"data_inicio" => "",
			"date_fim" => "",
			"instituicao_id" => 0
			);
	        $erros = ValidadorDoacao::doacao_inserir_validacao();
	        $this->assertTrue(!empty($erros));
	    }
		
		function testCamposErrados() {
	    	$_POST = array(
	    	"nome" => "",
			"quantidade" => "valor de quantidade como string",
			"descricao" => "",
			"preco" => "valor do preco como string",
			"data_inicio" => "33333",
			"date_fim" => "22222",
			"instituicao_id" => "hds hd s h"
			);
	        $erros = ValidadorDoacao::doacao_inserir_validacao();
	        $this->assertTrue(!empty($erros));
	    }
		
		function testComparacaoDeDatas() {
	    	$_POST = array(
	    	"data_inicio" => "20/03/2011"
			);
	        $erros = ValidadorDoacao::doacao_inserir_validacao();
	        $this->assertTrue(!empty($erros["data_inicio"])); // Data de início antes do dia de hoje
			
			$_POST = array(
	    	"data_inicio" => "20/03/2012",
	    	"date_fim" => "20/03/2011",
			);
	        $erros = ValidadorDoacao::doacao_inserir_validacao();
	        $this->assertTrue(!empty($erros["date_fim"])); // Data de fim não pode ser antes da data de iníciov
	    }
		
		function testCadastroEditarDeletar() {
			$_POST = array(
	    	"nome" => "doacaoNova1",
			"quantidade" => 1,
			"descricao" => "doacaoNova1",
			"preco" => 25,
			"data_inicio" => "20/03/2012",
			"date_fim" => "20/04/2012",
			"instituicao_id" => 1
			);
			$doacao_controller = new DoacaoController();
			
			$doacoes = $doacao_controller->listarDoacoes();
			$num_doacoes1 = count($doacoes);
			
			$sucesso_adicionar = $doacao_controller->novaDoacao(false);
			
			$this->assertTrue($sucesso_adicionar);
			
			$doacoes = $doacao_controller->listarDoacoes();
			$num_doacoes2 = count($doacoes);
			
			$this->assertEqual($num_doacoes1 + 1, $num_doacoes2);
		}
		
	}
?>